小编典典

与 Redux 反应?“上下文”问题呢?

all

我通常在 Stack 上发布与代码相关的内容,但这更多是关于社区的一般想法的问题。

似乎有很多人提倡使用 Redux 和 React 来管理数据/状态,但是在阅读和学习两者时,我遇到了一些看起来不太正确的东西。

还原

在此页面的底部:http ://redux.js.org/docs/basics/UsageWithReact.html (传递商店)它建议使用 React ‘Context’ 的“魔术”。

一种选择是将其作为道具传递给每个容器组件。然而,它变得乏味,因为您甚至必须通过展示组件来连接存储,因为它们恰好在组件树的深处渲染了一个容器。

我们推荐的选项是使用一个特殊的 React Redux 组件调用来神奇地使存储可用于所有容器组件......

反应

在 React Context 页面 顶部有一个警告:

上下文是一个高级和实验性的功能。API 可能会在未来的版本中发生变化。

然后在底部:

正如在编写清晰的代码时最好避免使用全局变量一样,在大多数情况下您应该避免使用上下文......

不要使用上下文通过组件传递模型数据。通过树显式地线程化您的数据更容易理解......

所以…

Redux 建议使用 React ‘Context’ 特性,而不是store通过 ‘props’ 向下传递给每个组件。而 React 建议相反。

此外,似乎 Dan Abramov(Redux 的创建者)现在为 Facebook(React 的创建者)工作,只是为了让我更加困惑。

  • 我读得对吗..?
  • 目前在这个问题上的普遍共识是什么..?

阅读 206

收藏
2022-05-09

共1个答案

小编典典

上下文是一项高级功能,可能会发生变化。在某些情况下,它的便利性超过了它的缺点,因此像 React Redux 和 React Router 这样的一些库选择依赖它,尽管它具有实验性质。

这里的重要部分是单词库。如果上下文改变了它的行为,我们作为库作者将需要调整. 但是,只要库不要求您直接使用上下文 API,您作为用户就不必担心对其进行更改。

React Redux 在内部使用上下文,但它没有在公共 API 中公开这一事实。所以你应该觉得通过 React Redux 使用上下文比直接使用上下文更安全,因为如果它发生变化,更新代码的负担将落在 React Redux 而不是你身上。

最终 React Redux 仍然支持始终将 store 作为 prop 传递,所以如果你想完全避免上下文,你可以选择。但是我会说这是不切实际的。

TLDR:除非您真的知道自己在做什么,否则请避免直接使用上下文。使用恰好在内部依赖上下文的库是相对安全的。

2022-05-09